SPSS 设置输出表格小数位数

作者:Ruben Geert van den Berg,发布于 SPSS Tools

SPSS 没有提供简便的方法来设置输出表格的小数位数。本教程介绍一个非常简单的工具,用于在生成基本输出表格后设置小数位数。它最适合简单的表格,例如 DESCRIPTIVES (描述统计)MEANS (均值)CROSSTABS (交叉表)

SPSS 设置输出小数位数 - 结果

设置输出表格的小数位数

SPSS 设置输出小数位数工具
  • 首先,确保已安装并正确运行 SPSS Python Essentials。
  • 下载并双击 SPSS Output Decimals Tool (SPSS 输出小数位数工具) 以进行安装。请注意,这是一个 SPSS custom dialog (SPSS 自定义对话框)
  • 运行一个或多个表格,例如使用 DESCRIPTIVES、MEANS 或 CROSSTABS 命令。在 output viewer window (输出查看器窗口) 中选择一个或多个表格。
  • 转到 Utilities(实用程序) SPSS 菜单箭头 Set Decimal Places for Output Tables(设置输出表格小数位数)。
  • 选择要处理所有选定表格的列以及所需的小数位数。
  • 单击 O k(确定) 或 P aste(粘贴) 并运行 syntax (语法)
  • 要为不同的列设置不同的小数位数,可以多次对同一个表格运行该工具,并在每次运行中指定不同的列和小数位数。[syntax example (语法示例)] 展示了如何快速执行此操作。

指定列

下图说明了如何指定列。 请注意,第一个“columns”不计算在内;根据 SPSS pivot table (透视表) 术语,这些不是列,而是行标签。这种区别对于 SPSS table templates (.stt files)(SPSS 表格模板(.stt 文件))以及该工具使用的 Python 脚本非常重要。

SPSS 设置输出小数位数 - 结果

请注意,行和列标签永远不会受到 Output Decimals tool (输出小数位数工具)的影响。 尽管该图在此处显示的是 value labels (“Very bad” 等等)(值标签),而不是值,但情况并非总是如此。 如果显示值,则可以通过 FORMATS 轻松设置行和列标签的小数位数。

SPSS 输出中的小数位数 - 替代方案

  • 由于 SPSS version 14(SPSS 14 版本)中引入了 Python,因此 Python scripting (Python 脚本) 是设置输出表格小数位数的首选方式。 它提供的控制级别基本上是无限的,但是大多数用户可能会发现 Python 脚本难以编写,并且需要大量的语法。 Output decimals tool (输出小数位数工具) 在底层使用了 Python 脚本。
  • 设置输出表格小数位数的经典方法是 SPSS script (SPSS 脚本)。 请注意,SPSS scripts (.sbs files)(SPSS 脚本(.sbs 文件))与 SPSS syntax (.sps) files(SPSS 语法(.sps 文件))截然不同。 自从 SPSS 14 版本中引入 Python scripting (Python 脚本) 作为其替代品以来,SPSS 脚本被认为是已弃用的。
  • SPSS OUTPUT MODIFY 可用于修改 SPSS 输出表格的几乎所有内容,包括小数位数和文本样式。 但是,由于其复杂性,我们发现很难用它来完成任务。 就个人而言,我们强烈偏爱更简单的工具,即使它们提供的功能较少。

SPSS Python 语法示例

您可以通过点击 这里 获取此工具的 SPSS Python 语法版本,其中包含我们工具的一些基本测试,而不是使用我们刚刚讨论的 Custom Dialog (自定义对话框)。

**************10. CREATE DATA.
**
data list free/id.
begin data
0 0 0 0 0 0 0 0 0 0 0
end data.

do repeat v = v1 to v5.
compute v = rv.binom(5,.5).
end repeat.

**************20. GENERATE SOME TABLES.
**
descriptives v1 v2.

means v1 by v2.

crosstabs v1 by v2/cells column.

**************30. DEFINE FUNCTION.
**
begin program.
def setOutputDecimals(cols,decs):
import SpssClient
SpssClient.StartClient()
outputDoc = SpssClient.GetDesignatedOutputDoc()
outputItems = outputDoc.GetOutputItems()
for index in range(outputItems.Size()):
    outputItem = outputItems.GetItemAt(index)
    if outputItem.GetType() == SpssClient.OutputItemType.PIVOT and outputItem.IsSelected():
        pTable = outputItem.GetSpecificType()
        dataCells = pTable.DataCellArray()
        for row in range(dataCells.GetNumRows()):
            if cols.lower() != 'all':
                try:
                    colList = [int(col) - 1 for col in cols.split(' **,** ')] #Because indexed at 0
                except:
                    print "Invalid column specification. Please specify positive integers separated by commas or the 'ALL' keyword."
                    break
            else:
                colList = range(dataCells.GetNumColumns())
            for col in colList:
                try:
                    dataCells.SetHDecDigitsAt(row,col,decs)
                except:
                    pass
SpssClient.StopClient()
end program.

**************40. TEST: SELECT (ONLY) DESCRIPTIVES TABLE IN OUTPUT AND RUN.
**
begin program.
setOutputDecimals('2,3',0)
setOutputDecimals('4',1)
setOutputDecimals('5',2)
end program.

**************50. TEST: SELECT (ONLY) MEANS TABLE IN OUTPUT AND RUN.
**
begin program.
setOutputDecimals('1',1)
setOutputDecimals('3',2)
end program.

**************60. TEST: SELECT (ONLY) CROSSTAB IN OUTPUT AND RUN.
**
begin program.
setOutputDecimals('all',0)
end program.